rand関数は、乱数を生成します。乱数の種(ランダムシード)を設定したい場合は、srand関数を使用します。なお、srand関数で種を設定していない場合の種は1です。

#include <stdlib.h>
int rand(void);
void srand(unsigned int seed);

seedは乱数の種を指定します。種が同じ場合は、生成する乱数の値も同じになります。

rand関数は戻り値として、0からRAND_MAXの間の疑似乱数整数を返します。srand関数の戻り値はありません。

プログラム 例

#include <stdio.h>
#include <stdlib.h>
/* 列数 */
#define ROW_MAX 10
/* 乱数の種 */
#define RANDOM_SEED 123U

int main(void)
{
  int       num;
  int       random;

  srand(RANDOM_SEED);

  for (num = 1; num <= 50; ++num) {
    /* 1~10の間の乱数を生成 */
    random = 1 + (int) (10.0 * rand() / (RAND_MAX + 1.0));

    printf('%4d', random);
    if ((num % ROW_MAX) == 0) {
      printf('\n');          /* 改行 */
    }
  }

  return 0;
}

例の実行結果

$ ./rand.exe
   1   8   3   4   4   2   4   3   1   9
   7   4   4   9   5   5   8  10   8   4
   9   4   4   1   2   9   3  10   8   1
   2   9   8   4   3   2   6   6   5   6
   5   1  10   8   9   4   3   7   4  10
$